Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Displaying Raw • Download


meshchatx/src/frontend/components/interfaces/Interface.vue ef040a9e908027d89d3913ef1d7aca82551d2a26 (ef040a9e) Text, 18.92 KB

T8b949e<!-- SPDX-License-Identifier: 0BSD AND MIT -->

Tb4b4b4<Tff7b72templateTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"interface-card min-w-0 transition-all duration-300"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Tb4b4b4{
Ta5d6ff'opacity-60 grayscale-[0.5]'Tff7b72: Tff7b72!Te6edf3isInterfaceEnabledTb4b4b4(Te6edf3ifaceTb4b4b4) Tff7b72|| Te6edf3ifaceTb4b4b4.Te6edf3_restart_required Tff7b72|| Tff7b72!Te6edf3isReticulumRunningTb4b4b4,
Tb4b4b4}Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex flex-col sm:flex-row gap-4 sm:items-start relative pt-11 sm:pt-0"Tb4b4b4>
T8b949e<!-- Offline Overlay -->
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Tff7b72!Te6edf3isReticulumRunningTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"absolute inset-0 z-10 flex items-center justify-center bg-white/20 dark:bg-zinc-900/20 backdrop-blur-[0.5px] rounded-3xl pointer-events-none"
Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"bg-red-500/90 text-white px-3 py-1.5 rounded-full shadow-lg flex items-center gap-2 text-[10px] font-bold uppercase tracking-wider"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"lan-disconnect" Te6edf3classTff7b72=Ta5d6ff"w-3.5 h-3.5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72spanTb4b4b4>Reticulum OfflineTb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- Restart Required Overlay -->
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3isReticulumRunning Tff7b72&& Te6edf3ifaceTb4b4b4.Te6edf3_restart_requiredTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"absolute inset-0 z-10 flex items-center justify-center bg-white/20 dark:bg-zinc-900/20 backdrop-blur-[0.5px] rounded-3xl pointer-events-none"
Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"bg-amber-500/90 text-white px-3 py-1.5 rounded-full shadow-lg flex items-center gap-2 text-[10px] font-bold uppercase tracking-wider"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"restart" Te6edf3classTff7b72=Ta5d6ff"w-3.5 h-3.5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72spanTb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"interfaces.restart_required"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex gap-4 min-w-0 flex-1 sm:flex-initial"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"interface-card__icon shrink-0"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Tb4b4b4:Te6edf3icon-nameTff7b72=Ta5d6ff"Te6edf3iconNameTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"w-6 h-6" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex-1 min-w-0 space-y-2 overflow-hidden"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center gap-2 flex-wrap"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-lg font-semibold text-gray-900 dark:text-white truncate min-w-0"Tb4b4b4>
Tff7b72{{ Te6edf3ifaceTb4b4b4.Te6edf3_name Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"type-chip shrink-0"Tb4b4b4>Tff7b72{{ Te6edf3ifaceTb4b4b4.Te6edf3type Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72span Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Te6edf3statusChipClassTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"shrink-0"Tb4b4b4>Tff7b72{{
Te6edf3isInterfaceEnabledTb4b4b4(Te6edf3ifaceTb4b4b4) Tff7b72? Te6edf3$tTb4b4b4(Ta5d6ff"app.enabled"Tb4b4b4) Tff7b72: Te6edf3$tTb4b4b4(Ta5d6ff"app.disabled"Tb4b4b4)
Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72span
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3isReticulumRunning Tff7b72&& Te6edf3isInterfaceEnabledTb4b4b4(Te6edf3ifaceTb4b4b4)Ta5d6ff"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Te6edf3ifaceLinkStatusChipClassTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"shrink-0"
Tb4b4b4>Tff7b72{{ Te6edf3ifaceLinkStatusLabel Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72span
Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3isDiscoverableTb4b4b4(Tb4b4b4)Ta5d6ff" Te6edf3classTff7b72=Ta5d6ff"discoverable-chip shrink-0"Tb4b4b4>DiscoverableTb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-sm text-gray-600 dark:text-gray-300 wrap-break-word min-w-0"Tb4b4b4>
Tff7b72{{ Te6edf3description Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex flex-wrap gap-2 text-xs text-gray-600 dark:text-gray-300"Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3ifaceTb4b4b4.Te6edf3_statsTff7b72?Tb4b4b4.Te6edf3bitrateTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"stat-chip"
Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"interface.bitrate"Tb4b4b4) Tff7b72}} Tff7b72{{ Te6edf3formatBitsPerSecondTb4b4b4(Te6edf3ifaceTb4b4b4.Te6edf3_statsTff7b72?Tb4b4b4.Te6edf3bitrate Tff7b72?? T79c0ff0Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72span
Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"stat-chip" Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Tb4b4b4{ Ta5d6ff'stat-chip--zero-traffic'Tff7b72: Te6edf3isIfaceStatBytesZeroTb4b4b4(Ta5d6ff'txb'Tb4b4b4) Tb4b4b4}Ta5d6ff"
Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"interface.tx"Tb4b4b4) Tff7b72}} Tff7b72{{ Te6edf3formatBytesTb4b4b4(Te6edf3ifaceTb4b4b4.Te6edf3_statsTff7b72?Tb4b4b4.Te6edf3txb Tff7b72?? T79c0ff0Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72span
Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"stat-chip" Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Tb4b4b4{ Ta5d6ff'stat-chip--zero-traffic'Tff7b72: Te6edf3isIfaceStatBytesZeroTb4b4b4(Ta5d6ff'rxb'Tb4b4b4) Tb4b4b4}Ta5d6ff"
Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"interface.rx"Tb4b4b4) Tff7b72}} Tff7b72{{ Te6edf3formatBytesTb4b4b4(Te6edf3ifaceTb4b4b4.Te6edf3_statsTff7b72?Tb4b4b4.Te6edf3rxb Tff7b72?? T79c0ff0Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72span
Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3ifaceTb4b4b4.Te6edf3type Tff7b72=== Ta5d6ff'RNodeInterface' Tff7b72&& Te6edf3ifaceTb4b4b4.Te6edf3_statsTff7b72?Tb4b4b4.Te6edf3noise_floorTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"stat-chip"
Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"interface.noise"Tb4b4b4) Tff7b72}} Tff7b72{{ Te6edf3ifaceTb4b4b4.Te6edf3_statsTff7b72?Tb4b4b4.Te6edf3noise_floor Tff7b72}} dBmTb4b4b4<Tb4b4b4/Tff7b72span
Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3ifaceTb4b4b4.Te6edf3_statsTff7b72?Tb4b4b4.Te6edf3clients Tff7b72!= Tff7b72nullTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"stat-chip"
Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"interface.clients"Tb4b4b4) Tff7b72}} Tff7b72{{ Te6edf3ifaceTb4b4b4.Te6edf3_statsTff7b72?Tb4b4b4.Te6edf3clients Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72span
Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3ifaceTb4b4b4.Te6edf3_statsTff7b72?Tb4b4b4.Te6edf3ifac_signatureTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"ifac-line"Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"text-emerald-500 font-semibold"Tb4b4b4>Tff7b72{{ Te6edf3ifaceTb4b4b4.Te6edf3_statsTb4b4b4.Te6edf3ifac_size Tff7b72* T79c0ff8 Tff7b72}}-bit IFACTb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3ifaceTb4b4b4.Te6edf3_statsTff7b72?Tb4b4b4.Te6edf3ifac_netnameTa5d6ff"Tb4b4b4>• Tff7b72{{ Te6edf3ifaceTb4b4b4.Te6edf3_statsTb4b4b4.Te6edf3ifac_netname Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72spanTb4b4b4>•Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"text-blue-500 hover:underline"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3onIFACSignatureClickTb4b4b4(Te6edf3ifaceTb4b4b4.Te6edf3_statsTb4b4b4.Te6edf3ifac_signatureTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tff7b72{{ Te6edf3ifaceTb4b4b4.Te6edf3_statsTb4b4b4.Te6edf3ifac_signatureTb4b4b4.Te6edf3sliceTb4b4b4(T79c0ff0Tb4b4b4, T79c0ff8Tb4b4b4) Tff7b72}}…Tff7b72{{ Te6edf3ifaceTb4b4b4.Te6edf3_statsTb4b4b4.Te6edf3ifac_signatureTb4b4b4.Te6edf3sliceTb4b4b4(Tff7b72-T79c0ff8Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"absolute top-2 right-2 z-20 flex flex-row items-center gap-1 sm:static sm:z-auto sm:flex sm:flex-row sm:gap-2 sm:items-center sm:shrink-0 sm:justify-end"
Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3isInterfaceEnabledTb4b4b4(Te6edf3ifaceTb4b4b4)Ta5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"inline-flex items-center justify-center rounded-full p-2 min-w-[44px] min-h-[44px] sm:min-w-0 sm:min-h-0 shrink-0 border-0 bg-transparent text-gray-600 dark:text-zinc-300 hover:bg-gray-100 dark:hover:bg-zinc-800 transition-colors"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'interface.disable'Tb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3disableInterfaceTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"power" Te6edf3classTff7b72=Ta5d6ff"w-5 h-5 sm:w-4 sm:h-4" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"hidden sm:inline sm:ml-1.5 text-xs font-semibold"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"interface.disable"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3v-else
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"inline-flex items-center justify-center rounded-full p-2 min-w-[44px] min-h-[44px] sm:min-w-0 sm:min-h-0 shrink-0 border-0 bg-transparent text-green-600 dark:text-green-400 hover:bg-gray-100 dark:hover:bg-zinc-800 transition-colors"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'interface.enable'Tb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3enableInterfaceTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"power" Te6edf3classTff7b72=Ta5d6ff"w-5 h-5 sm:w-4 sm:h-4" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"hidden sm:inline sm:ml-1.5 text-xs font-semibold"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"interface.enable"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"relative z-50 shrink-0"Tb4b4b4>
Tb4b4b4<Tff7b72DropDownMenuTb4b4b4>
Tb4b4b4<Tff7b72template #Te6edf3buttonTb4b4b4>
Tb4b4b4<Tff7b72IconButtonTb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"dots-vertical" Te6edf3classTff7b72=Ta5d6ff"w-5 h-5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72IconButtonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72templateTb4b4b4>
Tb4b4b4<Tff7b72template #Te6edf3itemsTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"max-h-60 overflow-auto py-1 space-y-1"Tb4b4b4>
Tb4b4b4<Tff7b72DropDownMenuItem Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3editInterfaceTa5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"pencil" Te6edf3classTff7b72=Ta5d6ff"w-5 h-5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72spanTb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"interface.edit_interface"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72DropDownMenuItemTb4b4b4>
Tb4b4b4<Tff7b72DropDownMenuItem Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3exportInterfaceTa5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"export" Te6edf3classTff7b72=Ta5d6ff"w-5 h-5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72spanTb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"interface.export_interface"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72DropDownMenuItemTb4b4b4>
Tb4b4b4<Tff7b72DropDownMenuItem Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3deleteInterfaceTa5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"trash-can" Te6edf3classTff7b72=Ta5d6ff"w-5 h-5 text-red-500" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"text-red-500"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"interface.delete_interface"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72DropDownMenuItemTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72templateTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72DropDownMenuTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Tb4b4b4[Ta5d6ff'UDPInterface'Tb4b4b4, Ta5d6ff'RNodeInterface'Tb4b4b4]Tb4b4b4.Te6edf3includesTb4b4b4(Te6edf3ifaceTb4b4b4.Te6edf3typeTb4b4b4)Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"mt-4 grid gap-2 text-sm text-gray-700 dark:text-gray-300"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3ifaceTb4b4b4.Te6edf3type Tff7b72=== Ta5d6ff'UDPInterface'Ta5d6ff" Te6edf3classTff7b72=Ta5d6ff"detail-grid"Tb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"detail-label"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"interface.listen"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"detail-value min-w-0 break-all"Tb4b4b4>Tff7b72{{ Te6edf3ifaceTb4b4b4.Te6edf3listen_ip Tff7b72}}:Tff7b72{{ Te6edf3ifaceTb4b4b4.Te6edf3listen_port Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"detail-label"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"interface.forward"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"detail-value min-w-0 break-all"Tb4b4b4>Tff7b72{{ Te6edf3ifaceTb4b4b4.Te6edf3forward_ip Tff7b72}}:Tff7b72{{ Te6edf3ifaceTb4b4b4.Te6edf3forward_port Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-else-ifTff7b72=Ta5d6ff"Te6edf3ifaceTb4b4b4.Te6edf3type Tff7b72=== Ta5d6ff'RNodeInterface'Ta5d6ff" Te6edf3classTff7b72=Ta5d6ff"detail-grid"Tb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"detail-label"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"interface.port"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"detail-value min-w-0 break-all"Tb4b4b4>Tff7b72{{ Te6edf3ifaceTb4b4b4.Te6edf3port Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"detail-label"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"interface.frequency"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"detail-value min-w-0 break-all"Tb4b4b4>Tff7b72{{ Te6edf3formatFrequencyTb4b4b4(Te6edf3ifaceTb4b4b4.Te6edf3frequencyTb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"detail-label"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"interface.bandwidth"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"detail-value min-w-0 break-all"Tb4b4b4>Tff7b72{{ Te6edf3formatFrequencyTb4b4b4(Te6edf3ifaceTb4b4b4.Te6edf3bandwidthTb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"detail-label"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"interface.spreading_factor"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"detail-value min-w-0 break-all"Tb4b4b4>Tff7b72{{ Te6edf3ifaceTb4b4b4.Te6edf3spreadingfactor Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"detail-label"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"interface.coding_rate"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"detail-value min-w-0 break-all"Tb4b4b4>Tff7b72{{ Te6edf3ifaceTb4b4b4.Te6edf3codingrate Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"detail-label"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"interface.txpower"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"detail-value min-w-0 break-all"Tb4b4b4>Tff7b72{{ Te6edf3ifaceTb4b4b4.Te6edf3txpower Tff7b72}} dBmTb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72templateTb4b4b4>

Tb4b4b4<Tff7b72scriptTb4b4b4>
Tff7b72import Te6edf3DialogUtils Tff7b72from Ta5d6ff"../../js/DialogUtils"Tb4b4b4;
Tff7b72import Te6edf3Utils Tff7b72from Ta5d6ff"../../js/Utils"Tb4b4b4;
Tff7b72import Te6edf3DropDownMenuItem Tff7b72from Ta5d6ff"../DropDownMenuItem.vue"Tb4b4b4;
Tff7b72import Te6edf3IconButton Tff7b72from Ta5d6ff"../IconButton.vue"Tb4b4b4;
Tff7b72import Te6edf3DropDownMenu Tff7b72from Ta5d6ff"../DropDownMenu.vue"Tb4b4b4;
Tff7b72import Te6edf3MaterialDesignIcon Tff7b72from Ta5d6ff"../MaterialDesignIcon.vue"Tb4b4b4;

Tff7b72export Tff7b72default Tb4b4b4{
Te6edf3nameTff7b72: Ta5d6ff"Interface"Tb4b4b4,
Te6edf3componentsTff7b72: Tb4b4b4{
Te6edf3DropDownMenuTb4b4b4,
Te6edf3IconButtonTb4b4b4,
Te6edf3DropDownMenuItemTb4b4b4,
Te6edf3MaterialDesignIconTb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3propsTff7b72: Tb4b4b4{
Te6edf3ifaceTff7b72: Tb4b4b4{
Te6edf3typeTff7b72: Tffa657ObjectTb4b4b4,
Te6edf3requiredTff7b72: Tff7b72trueTb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3isReticulumRunningTff7b72: Tb4b4b4{
Te6edf3typeTff7b72: Tffa657BooleanTb4b4b4,
Tff7b72defaultTff7b72: Tff7b72trueTb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3emitsTff7b72: Tb4b4b4[Ta5d6ff"enable"Tb4b4b4, Ta5d6ff"disable"Tb4b4b4, Ta5d6ff"edit"Tb4b4b4, Ta5d6ff"export"Tb4b4b4, Ta5d6ff"delete"Tb4b4b4]Tb4b4b4,
Te6edf3dataTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4{Tb4b4b4}Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3computedTff7b72: Tb4b4b4{
Te6edf3iconNameTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72switch Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3ifaceTb4b4b4.Te6edf3typeTb4b4b4) Tb4b4b4{
Tff7b72case Ta5d6ff"AutoInterface"Tff7b72:
Tff7b72return Ta5d6ff"home-automation"Tb4b4b4;
Tff7b72case Ta5d6ff"RNodeInterface"Tff7b72:
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3ifaceTb4b4b4.Te6edf3port Tff7b72&& Tff7b72thisTb4b4b4.Te6edf3ifaceTb4b4b4.Te6edf3portTb4b4b4.Te6edf3startsWithTb4b4b4(Ta5d6ff"tcp://"Tb4b4b4) Tff7b72? Ta5d6ff"lan-connect" Tff7b72: Ta5d6ff"radio-tower"Tb4b4b4;
Tff7b72case Ta5d6ff"RNodeMultiInterface"Tff7b72:
Tff7b72return Ta5d6ff"access-point-network"Tb4b4b4;
Tff7b72case Ta5d6ff"TCPClientInterface"Tff7b72:
Tff7b72return Ta5d6ff"lan-connect"Tb4b4b4;
Tff7b72case Ta5d6ff"TCPServerInterface"Tff7b72:
Tff7b72return Ta5d6ff"lan"Tb4b4b4;
Tff7b72case Ta5d6ff"UDPInterface"Tff7b72:
Tff7b72return Ta5d6ff"wan"Tb4b4b4;
Tff7b72case Ta5d6ff"SerialInterface"Tff7b72:
Tff7b72return Ta5d6ff"usb-port"Tb4b4b4;
Tff7b72case Ta5d6ff"KISSInterface"Tff7b72:
Tff7b72case Ta5d6ff"AX25KISSInterface"Tff7b72:
Tff7b72return Ta5d6ff"antenna"Tb4b4b4;
Tff7b72case Ta5d6ff"I2PInterface"Tff7b72:
Tff7b72return Ta5d6ff"eye"Tb4b4b4;
Tff7b72case Ta5d6ff"PipeInterface"Tff7b72:
Tff7b72return Ta5d6ff"pipe"Tb4b4b4;
Tff7b72defaultTff7b72:
Tff7b72return Ta5d6ff"server-network"Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3descriptionTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3ifaceTb4b4b4.Te6edf3type Tff7b72=== Ta5d6ff"TCPClientInterface"Tb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff`Tffd700${Tff7b72thisTb4b4b4.Te6edf3ifaceTb4b4b4.Te6edf3target_hostTffd700}Ta5d6ff:Tffd700${Tff7b72thisTb4b4b4.Te6edf3ifaceTb4b4b4.Te6edf3target_portTffd700}Ta5d6ff`Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3ifaceTb4b4b4.Te6edf3type Tff7b72=== Ta5d6ff"TCPServerInterface" Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3ifaceTb4b4b4.Te6edf3type Tff7b72=== Ta5d6ff"UDPInterface"Tb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff`Tffd700${Tff7b72thisTb4b4b4.Te6edf3ifaceTb4b4b4.Te6edf3listen_ipTffd700}Ta5d6ff:Tffd700${Tff7b72thisTb4b4b4.Te6edf3ifaceTb4b4b4.Te6edf3listen_portTffd700}Ta5d6ff`Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3ifaceTb4b4b4.Te6edf3type Tff7b72=== Ta5d6ff"SerialInterface"Tb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff`Tffd700${Tff7b72thisTb4b4b4.Te6edf3ifaceTb4b4b4.Te6edf3portTffd700}Ta5d6ff @ Tffd700${Tff7b72thisTb4b4b4.Te6edf3ifaceTb4b4b4.Te6edf3speed Tff7b72|| Ta5d6ff"9600"Tffd700}Ta5d6ffbpsTa5d6ff`Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3ifaceTb4b4b4.Te6edf3type Tff7b72=== Ta5d6ff"RNodeInterface" Tff7b72&& Tff7b72thisTb4b4b4.Te6edf3ifaceTb4b4b4.Te6edf3port Tff7b72&& Tff7b72thisTb4b4b4.Te6edf3ifaceTb4b4b4.Te6edf3portTb4b4b4.Te6edf3startsWithTb4b4b4(Ta5d6ff"tcp://"Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff`Ta5d6ffRNode over IP @ Tffd700${Tff7b72thisTb4b4b4.Te6edf3ifaceTb4b4b4.Te6edf3portTb4b4b4.Te6edf3replaceTb4b4b4(Ta5d6ff"tcp://"Tb4b4b4, Ta5d6ff""Tb4b4b4)Tffd700}Ta5d6ff`Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3ifaceTb4b4b4.Te6edf3type Tff7b72=== Ta5d6ff"AutoInterface"Tb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff"Auto-detect Ethernet and Wi-Fi peers"Tb4b4b4;
Tb4b4b4}
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3ifaceTb4b4b4.Te6edf3description Tff7b72|| Ta5d6ff"Custom interface"Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3statusChipClassTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3isInterfaceEnabledTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3ifaceTb4b4b4)
Tff7b72? Ta5d6ff"inline-flex items-center rounded-full bg-green-100 text-green-700 px-2 py-0.5 text-xs font-semibold"
Tff7b72: Ta5d6ff"inline-flex items-center rounded-full bg-red-100 text-red-700 px-2 py-0.5 text-xs font-semibold"Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3ifaceLinkStatusKeyTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3v Tff7b72= Tff7b72thisTb4b4b4.Te6edf3normalizedIfaceLinkUpTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3v Tff7b72=== Tff7b72trueTb4b4b4) Tff7b72return Ta5d6ff"up"Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3v Tff7b72=== Tff7b72falseTb4b4b4) Tff7b72return Ta5d6ff"down"Tb4b4b4;
Tff7b72return Tff7b72nullTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3ifaceLinkStatusLabelTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3key Tff7b72= Tff7b72thisTb4b4b4.Te6edf3ifaceLinkStatusKeyTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3key Tff7b72=== Ta5d6ff"up"Tb4b4b4) Tff7b72return Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"interface.link_up"Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3key Tff7b72=== Ta5d6ff"down"Tb4b4b4) Tff7b72return Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"interface.link_down"Tb4b4b4)Tb4b4b4;
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"interface.link_unknown"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3ifaceLinkStatusChipClassTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3key Tff7b72= Tff7b72thisTb4b4b4.Te6edf3ifaceLinkStatusKeyTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3key Tff7b72=== Ta5d6ff"up"Tb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff"inline-flex items-center rounded-full bg-emerald-100 text-emerald-800 dark:bg-emerald-900/45 dark:text-emerald-100 px-2 py-0.5 text-xs font-semibold"Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3key Tff7b72=== Ta5d6ff"down"Tb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff"inline-flex items-center rounded-full bg-amber-100 text-amber-900 dark:bg-amber-900/40 dark:text-amber-100 px-2 py-0.5 text-xs font-semibold"Tb4b4b4;
Tb4b4b4}
Tff7b72return Ta5d6ff"inline-flex items-center rounded-full bg-gray-100 text-gray-700 dark:bg-zinc-800 dark:text-zinc-300 px-2 py-0.5 text-xs font-semibold"Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3normalizedIfaceLinkUpTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3isReticulumRunning Tff7b72|| Tff7b72!Tff7b72thisTb4b4b4.Te6edf3isInterfaceEnabledTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3ifaceTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72nullTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3st Tff7b72= Tff7b72thisTb4b4b4.Te6edf3ifaceTb4b4b4.Te6edf3_statsTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3st Tff7b72|| Tff7b72typeof Te6edf3st Tff7b72!== Ta5d6ff"object"Tb4b4b4) Tb4b4b4{
T8b949e// If stats are missing, the interface is likely detached or
T8b949e// not yet initialised; show down rather than unknown.
Tff7b72return Tff7b72falseTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Ta5d6ff"status" Tff7b72in Te6edf3stTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3s Tff7b72= Te6edf3stTb4b4b4.Te6edf3statusTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3s Tff7b72=== Tff7b72trueTb4b4b4) Tff7b72return Tff7b72trueTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3s Tff7b72=== Tff7b72falseTb4b4b4) Tff7b72return Tff7b72falseTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72typeof Te6edf3s Tff7b72=== Ta5d6ff"string"Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3t Tff7b72= Te6edf3sTb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3t Tff7b72=== Ta5d6ff"up"Tb4b4b4) Tff7b72return Tff7b72trueTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3t Tff7b72=== Ta5d6ff"down"Tb4b4b4) Tff7b72return Tff7b72falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3stTb4b4b4.Te6edf3connected Tff7b72=== Tff7b72true Tff7b72|| Te6edf3stTb4b4b4.Te6edf3online Tff7b72=== Tff7b72trueTb4b4b4) Tff7b72return Tff7b72trueTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3stTb4b4b4.Te6edf3connected Tff7b72=== Tff7b72false Tff7b72|| Te6edf3stTb4b4b4.Te6edf3online Tff7b72=== Tff7b72falseTb4b4b4) Tff7b72return Tff7b72falseTb4b4b4;
Tff7b72return Tff7b72nullTb4b4b4;
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3methodsTff7b72: Tb4b4b4{
Te6edf3onIFACSignatureClickTff7b72: Tff7b72function Tb4b4b4(Te6edf3ifacSignatureTb4b4b4) Tb4b4b4{
Te6edf3DialogUtilsTb4b4b4.Te6edf3alertTb4b4b4(Te6edf3ifacSignatureTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3isDiscoverableTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3value Tff7b72= Tff7b72thisTb4b4b4.Te6edf3ifaceTb4b4b4.Te6edf3discoverableTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72typeof Te6edf3value Tff7b72=== Ta5d6ff"string"Tb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4[Ta5d6ff"true"Tb4b4b4, Ta5d6ff"yes"Tb4b4b4, Ta5d6ff"1"Tb4b4b4, Ta5d6ff"on"Tb4b4b4]Tb4b4b4.Te6edf3includesTb4b4b4(Te6edf3valueTb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72return Tffa657BooleanTb4b4b4(Te6edf3valueTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3isInterfaceEnabledTff7b72: Tff7b72function Tb4b4b4(Te6edf3ifaceTb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3UtilsTb4b4b4.Te6edf3isInterfaceEnabledTb4b4b4(Te6edf3ifaceTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3enableInterfaceTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3$emitTb4b4b4(Ta5d6ff"enable"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3disableInterfaceTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3$emitTb4b4b4(Ta5d6ff"disable"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3editInterfaceTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3$emitTb4b4b4(Ta5d6ff"edit"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3exportInterfaceTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3$emitTb4b4b4(Ta5d6ff"export"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3deleteInterfaceTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3$emitTb4b4b4(Ta5d6ff"delete"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3formatBitsPerSecondTff7b72: Tff7b72function Tb4b4b4(Te6edf3bitsTb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3UtilsTb4b4b4.Te6edf3formatBitsPerSecondTb4b4b4(Te6edf3bitsTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3formatBytesTff7b72: Tff7b72function Tb4b4b4(Te6edf3bytesTb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3UtilsTb4b4b4.Te6edf3formatBytesTb4b4b4(Te6edf3bytesTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3formatFrequencyTb4b4b4(Te6edf3hzTb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3UtilsTb4b4b4.Te6edf3formatFrequencyTb4b4b4(Te6edf3hzTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3isIfaceStatBytesZeroTb4b4b4(Te6edf3fieldTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3st Tff7b72= Tff7b72thisTb4b4b4.Te6edf3ifaceTb4b4b4.Te6edf3_statsTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3stTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72falseTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3raw Tff7b72= Te6edf3stTb4b4b4[Te6edf3fieldTb4b4b4]Tb4b4b4;
Tff7b72const Te6edf3n Tff7b72= Te6edf3raw Tff7b72== Tff7b72null Tff7b72? T79c0ff0 Tff7b72: Tffa657NumberTb4b4b4(Te6edf3rawTb4b4b4)Tb4b4b4;
Tff7b72return Tb4b4b4(Tffa657NumberTb4b4b4.Tffa657isFiniteTb4b4b4(Te6edf3nTb4b4b4) Tff7b72? Te6edf3n Tff7b72: T79c0ff0Tb4b4b4) Tff7b72=== T79c0ff0Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4<Tb4b4b4/Tff7b72scriptTb4b4b4>

Tb4b4b4<Tff7b72style Te6edf3scopedTb4b4b4>
Tb4b4b4@Tff7b72reference Ta5d6ff"../../style.css"Tb4b4b4;
Tb4b4b4.T56d364interface-card Tb4b4b4{
@apply relative bg-white/95 Te6edf3darkTb4b4b4:Te6edf3bg-zinc-900Tff7b72/T79c0ff85 Te6edf3backdrop-blur-sm Tff7b72border Tff7b72borderTff7b72-Tff7b72grayT79c0ff-200 Te6edf3darkTff7b72:Tff7b72borderTff7b72-Te6edf3zinc-800 Te6edf3rounded-3xl Te6edf3shadow-lg Te6edf3p-4 Tff7b72spaceTff7b72-Te6edf3y-3 Te6edf3hoverTff7b72:Te6edf3z-10 Te6edf3min-w-0Tb4b4b4;
Tff7b72overflowTb4b4b4: Tff7b72visibleTb4b4b4;
Tb4b4b4}
Tb4b4b4.T56d364interface-card__icon Tb4b4b4{
@apply w-12 h-12 rounded-2xl bg-blue-50 text-blue-600 Te6edf3darkTb4b4b4:Te6edf3bg-blue-900Tff7b72/T79c0ff40 Te6edf3darkTff7b72:Tff7b72textTff7b72-Tff7b72blueT79c0ff-200 Tff7b72flex Te6edf3items-center Tff7b72justifyTff7b72-Tff7b72centerTb4b4b4;
Tb4b4b4}
Tb4b4b4.T56d364type-chip Tb4b4b4{
@apply inline-flex items-center rounded-full bg-gray-100 Te6edf3darkTb4b4b4:Te6edf3bg-zinc-800 Te6edf3px-2 Te6edf3py-0T79c0ff.5 Tff7b72textTff7b72-Te6edf3xs Tff7b72fontTff7b72-Te6edf3semibold Tff7b72textTff7b72-Tff7b72grayT79c0ff-600 Te6edf3darkTff7b72:Tff7b72textTff7b72-Tff7b72grayT79c0ff-200Tb4b4b4;
Tb4b4b4}
Tb4b4b4.T56d364stat-chip Tb4b4b4{
@apply inline-flex items-center rounded-full border border-gray-200 Te6edf3darkTb4b4b4:Tff7b72borderTff7b72-Te6edf3zinc-700 Te6edf3px-2 Te6edf3py-0T79c0ff.5Tb4b4b4;
Tb4b4b4}
Tb4b4b4.T56d364stat-chip--zero-traffic Tb4b4b4{
@apply border-red-400 bg-red-50 text-red-800 Te6edf3darkTb4b4b4:Tff7b72borderTff7b72-Tff7b72redT79c0ff-700 Te6edf3darkTff7b72:Te6edf3bg-red-950Tff7b72/T79c0ff50 Te6edf3darkTff7b72:Tff7b72textTff7b72-Tff7b72redT79c0ff-200 Tff7b72fontTff7b72-Te6edf3semiboldTb4b4b4;
Tb4b4b4}
Tb4b4b4.T56d364ifac-line Tb4b4b4{
@apply text-xs flex flex-wrap items-center gap-1Tb4b4b4;
Tb4b4b4}
Tb4b4b4.T56d364discoverable-chip Tb4b4b4{
@apply inline-flex items-center rounded-full bg-blue-100 text-blue-700 px-2 py-0.5 text-xs font-semibold Te6edf3darkTb4b4b4:Te6edf3bg-blue-900Tff7b72/T79c0ff50 Te6edf3darkTff7b72:Tff7b72textTff7b72-Tff7b72blueT79c0ff-200Tb4b4b4;
Tb4b4b4}
Tb4b4b4.T56d364detail-grid Tb4b4b4{
@apply grid gap-3 Te6edf3smTb4b4b4:Tff7b72gridTff7b72-Te6edf3cols-2Tb4b4b4;
Tb4b4b4}
Tb4b4b4.T56d364detail-label Tb4b4b4{
@apply text-xs uppercase tracking-wide text-gray-500 Te6edf3darkTb4b4b4:Tff7b72textTff7b72-Tff7b72grayT79c0ff-400Tb4b4b4;
Tb4b4b4}
Tb4b4b4.T56d364detail-value Tb4b4b4{
@apply text-sm font-medium text-gray-900 Te6edf3darkTb4b4b4:Tff7b72textTff7b72-Tff7b72white Te6edf3min-w-0 Te6edf3break-allTb4b4b4;
Tb4b4b4}
Tb4b4b4<Tb4b4b4/Tff7b72styleTb4b4b4>


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────